1. Field of the Invention
The present invention is directed to technology for monitoring applications in a computing environment.
2. Description of the Related Art
The growing presence of the Internet as well as other computer networks such as intranets and extranets has brought many new applications in e-commerce, education and other areas. Organizations increasingly rely on such applications to carry out their business or other objectives, and devote considerable resources to ensuring that the applications perform as expected. To this end, various application management techniques have been developed.
For example, for component-based applications, such as those based on Java 2 Platform Enterprise Edition (J2EE), one approach is to collect data about the individual software components that are invoked in an application. A software component generally refers to a software technology for encapsulating software functionality. A software component has characteristics including: multiple-use (reusable), non-context-specific, composable with other components, encapsulated, and a unit of independent deployment and versioning. Alternatively, a component can be considered to be an object written to a specification, such as Java Beans, or the Component Object Model, a Microsoft platform for software componentry. A component can also include a web server or a database, for instance. Software components are typically invoked by processes or threads executing in an application, middleware or other software.
For example, for a web-based e-commerce application, a process or transaction at an application server is typically initiated by a request to the server, such as a user request to purchase an item. The process may invoke a number of components to carry out the steps necessary to allow the user to purchase the item. For example, a shopping cart component may be used to allow the user to identify the item desired, the payment method and the shipping information. A reservation component may be used to reserve the item while a credit check component verifies the user's credit card information. Once the credit card information is verified, an inventory component is updated based on the item purchased, and a shipping component is invoked to arrange for the item to be shipped, such as by contacting a warehouse. An order completion component may be invoked to confirm the purchase to the user such as by providing an order confirmation number and a tracking number on a web page. Moreover, a given component may be invoked more than once during an application.
For debugging and other purposes, it is desirable to understand the flow of an application and relationships between components and the services they provide. To this end, instrumentation can be added to the components to provide a trace, which is a detailed record of the steps a computer program executes. The trace identifies each component that is invoked in a transaction and can provide performance data such as the execution time of each component. One type of trace is a stack trace. However, using such trace data for analysis can consume an excessive amount of overhead data and thereby impact the very application which is being monitored.